package com.jhgsys.internal.accident.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jhgsys.internal.accident.entity.*;
import com.jhgsys.internal.formDesign.entity.AccidentSurveyAuditRecord;
import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @className AccidentReportDto
 * @description 
 * @author DingHaiTao
 * @date: 2024/8/8 16:59
*/
@Data
public class AccidentReportDto extends AccidentReport {
    /**
     * 用户id
     */
    private String userId;
    /**
     * 事故编号(treeTable渲染需要)
     */
    private String name;
    /**
     * 用户姓名
     */
    private String userRealName;
    /**
     * 部门id
     */
    private String deptId;
    /**
     * 事故报告原因id
     */
    private String reportRectificationId;
    /**
     * 事故报告原因类型
     */
    private String reasonType;
    /**
     * 事故报告直接原因
     */
    private String directReason;
    /**
     * 事故报告间接原因
     */
    private String indirectionReason;
    /**
     * 事故报告原因描述
     */
    private String reasonContent;
    /**
     * 事故报告原因录入日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date surveyDate;

    /**
     * 整改截至日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date rectificationDeadline;

    /**
     * 事故报告原因整改状态
     */
    private String rectificationStatus;
    /**
     * 事故报告原因整改要求
     */
    private String rectificationOpinion;

    /**
     * 整改责任人
     */
    private String obligationUserIdRectification;

    /**
     * 整改责任人工号
     */
    private String obligationUserNoRectification;

    /**
     * 整改责任人名字
     */
    private String obligationRealNameRectification;

    /**
     * 整改责任人部门id
     */
    private String obligationDeptIdRectification;

    /**
     * 整改责任人部门
     */
    private String obligationDeptNameRectification;

    /**
     * 整改责任人岗位id
     */
    private String obligationPostIdRectification;

    /**
     * 整改责任人岗位
     */
    private String obligationPostNameRectification;

    /**
     * 业务类型
     */
    private String businessType;
    /**
     * 审核类型
     */
    private String auditBusiness;
    /**
     * 审核结果 1：审核通过；2：审核退回
     */
    private String auditResult;
    /**
     * 审核原因
     */
    private String auditReason;
    /**
     * 公司名称
     */
    private String tenantName;
    /**
     * 业务类型
     */
    private String accidentTypeName;
    /**
     * 事故等级名称
     */
    private String accidentLevelName;

    /**
     * 事故发生时间开始
     */
    private String startDate;
    /**
     * 事故发生时间结束
     */
    private String endDate;
    /**
     * 调查人账号
     */
    private String surveyUserName;
    /**
     * 调查人工号
     */
    private String surveyUserNo;

    /**
     * 删除的事故原因
     */
    private String deleteReportReasonIds;

    /**
     * 删除的整改措施
     */
    private String deleteReportRectificationIds;

    /**
     * 事故上报伤亡人员list
     */
    private List<AccidentReportInkuryUser> injuryUserDataList;

    /**
     * 事故上报肇事人员list
     */
    private List<AccidentReportCulpritUser> culpritUserDataList;

    /**
     * 事故报告附件类型 1：事故上报文件 2：事故调查文件
     */
    private String fileType;

    /**
     * 事故上报附件 list
     */
    private List<AccidentReportFile> accidentReportFileList;
    /**
     * 事故调查文件 list
     */
    private List<AccidentReportFile> accidentSurveyFileList;

    /**
     * 事故原因 accident_report_reason
     */
    private List<AccidentReportReasonDto> reportReasonList;

    /**
     * 整改措施 accident_report_rectification
     */
    private List<AccidentReportRectification> rectificationOpinionList;

    /**
     * 整改措施 accident_report_timeline
     */
    private List<AccidentReportTimeline> timelineList;

    /**
     * 事故分析图
     */
    private List<AccidentReportFile> reportAnalysisFileList;

    /**
     * 事故图解
     */
    private List<AccidentReportFile> reportImgFileList;

    /**
     * 事故调查审核记录
     */
    private List<AccidentSurveyAuditRecord> surveyAuditRecordList;

    /**
     * 整改措施排序
     */
    private Integer opinionSort;

    /**
     * 事故原因 accident_report_reason list
     */
    private List<AccidentReportReasonDto> children;

    /**
     * 调查指派组员
     */
    private List<AccidentSurveyUserDto> teamList = new ArrayList<>();
}
